目前常見的Web集群調度器分為軟件和硬件
軟件通常使用開源的LVS、Haproxy、 Nginx
LVS性能最好,但是搭建相對復雜; Nginx 的upstream模塊支持群集功能,但是對群集節點健康檢查功能不強,高并發性能沒有Haproxy好。
硬件一般使用比較多的是F5、Array, 也有很多人使用國內的一些產品,如梭子魚、綠盟等
1、HAProxy的概念
HAProxy是可提供高可用性、負載均衡以及基于TCP和HTTP應用的代理,是免費、快速并且可靠的一種解決方案。HAProxy 非常適用于并發大(并發達1w以上) web站點,這些站點通常又需要會話保持或七層處理。HAProxy的運行模式使得它可以很簡單安全的整合至當前的架構中,同時可以保護web服務器不被暴露到網絡上。
1.1 Haproxy應用分析
LVS在企業應用中抗負載能力很強,但存在不足
LVS不支持正則處理,不能實現動靜分離
對于大型網站,LVS的實施配置復雜,維護成本相對較高
Haproxy是一款可提供高可用性、負載均衡、及基于TCP和HTTP應用的代理的軟件
適用于負載大的Web站點
運行在硬件上可支持數以萬計的并發連接的連接請求
1.2 HAProxy的主要特性
? ? 可靠性和穩定性非常好,可以與硬件級的F5負載均衡設備相媲美
? ? 最高可以同時維護40000-50000個并發連接,單位時間內處理的最大請求數為20000個,最大處理能力可達10Git/s;
? ? 支持多達8種負載均衡算法
? ? 支持Session會話保持,Cookie的引導;
? ? 支持通過獲取指定的url來檢測后端服務器的狀態;
? ? 支持虛機主機功能,從而實現web負載均衡更加靈活
? ? 支持連接拒絕、全透明代理等獨特的功能;
? ? 擁有強大的ACL支持,用于訪問控制
? ? 支持TCP協議的負載均衡轉發;
? ? 支持客戶端的keepalive功能,減少客戶端與haproxy的多次三次握手導致資源浪費,讓多個請求在一 個tcp連接中完成
1.3 Haproxy提供了3種實現會話保持的方式
? ? 源地址hash
? ? 設置cookie
? ? 會話粘性表stick-table
2、HAProxy調度算法常見的8種
? ? roundrobin, 表示簡單的輪詢
? ? static-rr, 表示根據權重
? ? leastconn,表示最少連接者先處理
? ? source,表示根據請求源IP
? ? uri,表示根據請求的URI,做cdn需使用;
? ? 表示根據請求的URL參數'balance url_param' requires an URL parameter name
? ? hdr (name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
? ? rdp-cookie (name),表示根據cookie (name)來鎖定并哈希每一次TCP請求。